<?php 
class empresaController extends CController{
    public $model_name = 'venda/empresa';
    
    public function __construct($vars) {
        $this->addToFreeCod('checkaddress');
        parent::__construct($vars);
    }
    
    public function AfterLoad() {
        parent::AfterLoad();
        if(!empty($this->item) && CURRENT_ACTION == "show"){
            
            $this->LoadModel(CURRENT_MODULE.'/funcionario', 'func');
            $this->LoadResource("html", 'html');
            $this->hasDecisor = $this->func->HasDecisor($this->item['venda_empresa_cod']);
            $alerttype = "alert";
            if(!$this->hasDecisor){
                $url = $this->html->getActionLinkIfHasPermission('venda/funcionario/formulario', "clique aqui");
                if($url != ""){
                    $this->registerVar($alerttype,"Esta empresa não possui nenhum decisor. Para adicionar um novo $url");
                }
            }elseif(cookie::cookieExists('visiting')){
                $url = $this->html->getActionLinkIfHasPermission('venda/visita/formulario', " Concluir o registro da visita");
                if($url != ""){
                    $this->registerVar($alerttype,$url);
                }
            }
        }
    }
    
    public function show($display = true, $link = "") {
        
        if($this->item['__venda_empresa_status'] == 'unsaved'){
            Redirect(LINK."/edit/$this->cod");
            return;
        }
        
        //verifica se uma visita começou a ser cadastrada e se a visita é para esta empresa
        if(cookie::cookieExists("visiting") && cookie::cookieExists("visiting_empresa")) {
            $cod = cookie::getVar("visiting_empresa");
            if($cod == $this->cod) Redirect (cookie::getVar ('visiting'));
        }
        
        $this->LoadModel('venda/equipe', 'eq');
        $cod = $this->eq->getCodEquipeOfUser();
        
        $this->LoadModel('venda/evento', 'ev');
        if(!$this->ev->hasEventoAtivo($cod)){
            EventTube::removeItemFromMenu('body-top', 'Nova Visita');
        }
        
        parent::show($display, $link);
    }

    public function formulario($display = true, $link = "") {
        $this->LoadModel('venda/equipe', 'eq');
        $cod = $this->eq->getCodEquipeOfUser();
        if($cod == ""){
            $this->registerVar('erro', 'Você só pode cadastrar empresas se estiver participando de alguma equipe');
            $this->display('');
            return;
        }elseif(!isset($_SESSION['venda/equipe']) || $cod !=  $_SESSION['venda/equipe']){
            $_SESSION['venda/equipe'] = $cod;
        }
        
        if(!$this->eq->EquipeHasEventoAtivo($cod)){
            $arr['erro'] = "Você só pode cadastrar novas empresas se tiver algum evento ativo em sua equipe";
            cookie::setVar($this->sess_cont_alerts, $arr);
            Redirect("venda/equipe/show/$cod");
            return;
        }
        
        $cod = $this->model->createEmpty();
        if($cod === false){
            $this->setVars($this->model->getMessages());
            $this->display('');
            return;
        }
        cookie::setVar('visiting_empresa', $cod);
        Redirect("venda/empresa/edit/$cod");
    }
    
    public function edit($display = true, $link = "") {
        if($this->item['__venda_empresa_status'] == 'unsaved'){
            $this->LoadComponent(LINK, 'emp');
            $this->emp->js();
            EventTube::removeItemFromMenu('body-top', 'Voltar para Empresa');
            $this->genTags("Nova Empresa");
        }else $this->genTags("Editar - ".$this->item['venda_empresa_nome']);
        if($this->verifyUserCanEdit())
            parent::edit($display, $link);
        else $this->show();
    }
    
    private function verifyUserCanEdit(){
        
        //se usuário tem a permissão de editar dados antigos
        $this->LoadModel('usuario/perfil', 'perf');
        if($this->perf->hasPermissionByName('Venda_Old_Empresa'))
            return true;
        
        //se usuário não é o autor da empresa
        if($this->item["__cod_usuario"] != usuario_loginModel::CodUsuario()){
            $this->registerVar('erro', 'Somente quem criou a empresa ou um administrador podem editar esta empresa');
            return false;
        }
        
        //se o prazo para editar a empresa não terminou
        if(timeResource::diffDate($this->item['venda_empresa_criado'], '', 'h') <= 24)
            return true;
        
        $this->registerVar('erro', 'O prazo para editar esta empresa está encerrado!');
        return false;
        
    }
    
    public function checkaddress(){
        $cod = $this->model->checkaddress($_POST);
        if($cod === false){
            $var['emp_visitada'] = "0";
        }else{
            $this->LoadResource('html', 'html');
            $var['emp_visitada'] = "1";
            $var['link']         = $this->html->getActionLinkIfHasPermission("venda/empresa/show/$cod", 
                'Clique aqui para acessar a página da empresa com este endereço');
        }
        echo json_encode($var);
    }
    
    public function historico(){
        $page = isset($page[1])?$page[1]:1;
        $this->LoadModel('venda/empresalog', 'elog');
        $this->registerVar('logs', $this->elog->showLogs($this->cod, $page));
        $this->display(LINK ."/log");
    }
    
    public function apagar() {
        $this->prevent_redirect();
        if($this->verifyUserCanEdit()){
            parent::apagar();
            $status = $this->getVar('status');
            if($status == '1'){
                cookie::destroy('visiting');
                $this->LoadModel('venda/equipe', 'eq');
                $cod_equipe = $this->eq->getCodEquipeOfUser();
                $link = ($cod_equipe == "")?'venda/equipe':"venda/equipe/show/$cod_equipe";
                Redirect ($link);
            }
            else $this->display ('');
        }else $this->show();
    }
}
?>